import java.util.*;
public class Main {
   /* 给定一个整数数组 temperatures ，表示每天的温度，返回一个数组 answer ，其中 answer[i] 是指对于第 i 天
    ，下一个更高温度出现在几天后。如果气温在这之后都不会升高，请在该位置用 0 来代替。*/
   public static int[] check(int[] temperatures) {
       int n=temperatures.length;
       int[]arr=new int[n];
       Deque<Integer> stack=new ArrayDeque<>();//Deque兼容性更强，一般情况都是使用Deque
       for(int i=0;i<n;i++){
           while(!stack.isEmpty() && temperatures[i]>stack.peek()){//stack.peek()为什么栈顶温度
               int temp=stack.pop();//记录栈顶索引
               arr[temp]=i-temp;//记录大于当前温度之后出现的天数
           }
           stack.push(i);//反之压入栈中充当天数
       }
       return arr;
   }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int[] temperatures=new int[n];
        for(int i=0;i<n;i++){
            temperatures[i]=sc.nextInt();
        }
        int[] answer=check(temperatures);
        System.out.println(Arrays.toString(answer));
    }
}